import { getToken, setToken, removeToken, setTimeStamp } from '@/utils/auth'
import { login, getInfo, getUserDetailById } from '@/api/user'

const state = {
// 存储token
  token: getToken(),
  // 存储用户信息
  userinfo: {}
}
const mutations = {
  // 更新token
  setToken(state, token) {
    // 给vuex  一份 token
    state.token = token
    // 给本地一份
    setToken(token)
  },
  // 清除token
  removeToken(state) {
    // 清除vuex 的token
    state.token = null
    // 清除本地
    removeToken()
  },
  // 更改用户信息
  setUserInfo(state, userinfo) {
    // 存储vuex的用户信息
    state.userinfo = userinfo
  },
  // 清空vuex 的用户信息
  removeUserInfo(state) {
    state.userinfo = {}
  }
}
const actions = {
  // 获取token
  async login({ commit }, data) {
    const res = await login(data)
    commit('setToken', res)
    setTimeStamp()
  },
  // 获取用户和信息
  async getUserinfo({ commit }) {
    const res = await getInfo()
    const detail = await getUserDetailById(res.userId)
    console.log(res)
    // 更新state的用户信息
    commit('setUserInfo', { ...res, ...detail })
  },
  // 实现登出功能
  logout({ commit }) {
    commit('removeToken')
    commit('removeUserInfo')
  }
}
//
export default {
  namespaced: true,
  state,
  mutations,
  actions
}
